Exception Handling Middleware হলো ASP.Net Core অ্যাপ্লিকেশনে ইস্যু বা ত্রুটি (exception) ধরার এবং যথাযথভাবে প্রতিক্রিয়া জানানোর একটি মেকানিজম। এটি ডেভেলপারদের সুবিধার্থে বিভিন্ন ধরনের ত্রুটি যেমন, সিস্টেম ত্রুটি (system errors), ইনপুট ভুল ত্রুটি (input validation errors), এবং অন্যান্য ব্যতিক্রম (exceptions) সমাধান করতে সাহায্য করে।
ASP.Net Core এ Middleware হলো পিপলাইন স্তরের কম্পোনেন্ট যা HTTP রিকোয়েস্ট প্রসেসিংয়ের মধ্যবর্তী পর্যায়ে কাজ করে। Exception Handling Middleware এর মাধ্যমে অ্যাপ্লিকেশন উন্নত এবং নির্ভরযোগ্যভাবে কাজ করতে পারে।
অ্যাপ্লিকেশনে ত্রুটি ঘটলে যদি ত্রুটির সঠিকভাবে হ্যান্ডেলিং না করা হয়, তাহলে:
Exception Handling Middleware এই ধরনের সমস্যা সমাধান করে এবং ত্রুটি ঘটলে ব্যবহারকারী বা ডেভেলপারকে নির্দিষ্ট ভাবে জানায়, যাতে অ্যাপ্লিকেশন সঠিকভাবে চলতে পারে।
ASP.Net Core অ্যাপ্লিকেশনে Exception Handling Middleware সেটআপ করতে, Startup.cs
ফাইলে Configure
মেথডে UseExceptionHandler
অথবা UseDeveloperExceptionPage
মেথড ব্যবহার করতে হয়।
UseExceptionHandler
এর মাধ্যমে আপনি একটি কাস্টম ত্রুটি পৃষ্ঠা (error page) নির্দিষ্ট করতে পারেন। এটি প্রোডাকশন পরিবেশে ত্রুটি হ্যান্ডল করার জন্য আদর্শ।
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage(); // ডেভেলপমেন্ট পরিবেশে ডেভেলপার ত্রুটি পৃষ্ঠা
}
else
{
app.UseExceptionHandler("/Home/Error"); // প্রোডাকশনে কাস্টম ত্রুটি পৃষ্ঠা
app.UseHsts(); // HSTS কনফিগারেশন
}
// অন্যান্য Middleware
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapControllers();
}
এখানে, যদি অ্যাপ্লিকেশন ডেভেলপমেন্ট মোডে থাকে, তবে UseDeveloperExceptionPage()
ব্যবহার করা হয়, যা ত্রুটির বিস্তারিত বার্তা দেখায়। তবে যদি প্রোডাকশন পরিবেশে অ্যাপ্লিকেশন চলছে, তবে UseExceptionHandler("/Home/Error")
ব্যবহার করা হবে, যেখানে /Home/Error
পৃষ্ঠায় একটি কাস্টম ত্রুটি বার্তা দেখানো হবে।
ডেভেলপমেন্ট পরিবেশে UseDeveloperExceptionPage ব্যবহার করা হয়, যা ত্রুটির বিস্তারিত লগ এবং স্ট্যাক ট্রেস প্রদর্শন করে। এটি ডেভেলপারদের সমস্যা শনাক্ত করতে সহায়তা করে। তবে প্রোডাকশনে এটি ব্যবহৃত হলে নিরাপত্তার জন্য এটি বিপদজনক হতে পারে, কারণ এটি বিস্তারিত ত্রুটি বার্তা প্রকাশ করে।
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage(); // ডেভেলপমেন্টে ত্রুটি স্ট্যাক ট্রেস সহ দেখাবে
}
else
{
app.UseExceptionHandler("/Home/Error"); // প্রোডাকশনে কাস্টম ত্রুটি পৃষ্ঠা
}
// অন্যান্য Middleware
}
UseExceptionHandler এর মাধ্যমে কাস্টম ত্রুটি পৃষ্ঠা তৈরি করা যায়, যেখানে আপনি ব্যবহারকারীর জন্য একটি সাধারণ ত্রুটি বার্তা এবং বিকল্প পথ প্রদান করতে পারেন। যেমন একটি Error পৃষ্ঠা তৈরি করা:
public class HomeController : Controller
{
public IActionResult Error()
{
return View(); // একটি কাস্টম error view রেন্ডার করবে
}
}
@{
Layout = "_Layout";
}
<h1>Something went wrong!</h1>
<p>Sorry, there was a problem with your request. Please try again later.</p>
এখানে, /Home/Error
পৃষ্ঠাটি ব্যবহারকারীদের একটি সাধারণ ত্রুটি বার্তা দেখাবে।
ASP.Net Core অ্যাপ্লিকেশনে Logging সহ Exception Handling আরও কার্যকরী করা যেতে পারে। আপনি ত্রুটির লগ রাখতে পারেন, যাতে ডেভেলপাররা ত্রুটির বিশ্লেষণ করতে পারে এবং সমস্যাগুলি সমাধান করতে পারে।
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILogger<Startup> logger)
{
app.UseExceptionHandler(errorApp =>
{
errorApp.Run(async context =>
{
var exceptionHandlerPathFeature = context.Features.Get<IExceptionHandlerPathFeature>();
var exception = exceptionHandlerPathFeature?.Error;
logger.LogError($"Exception occurred: {exception?.Message}");
context.Response.Redirect("/Home/Error");
});
});
}
এখানে, ILogger ব্যবহার করে ত্রুটি লগ করা হয়েছে এবং তারপর ব্যবহারকারীকে /Home/Error
পৃষ্ঠায় রিডাইরেক্ট করা হয়েছে।
Exception Handling Middleware ASP.Net Core অ্যাপ্লিকেশনগুলিতে ত্রুটি পরিচালনার জন্য একটি গুরুত্বপূর্ণ অংশ। এটি ত্রুটির কারণে অ্যাপ্লিকেশন ক্র্যাশ হওয়া আটকায় এবং ব্যবহারকারীকে সঠিকভাবে ত্রুটি বার্তা প্রদর্শন করে। UseExceptionHandler
এবং UseDeveloperExceptionPage
মেথডের মাধ্যমে আপনি ত্রুটি হ্যান্ডলিং কাস্টমাইজ করতে পারেন, এবং লগিং ব্যবহারের মাধ্যমে ত্রুটির বিশ্লেষণ করতে পারেন।
Read more